import logging

logger = logging.getLogger()  # 定义对应的程序模块名name，默认是root
logger.setLevel(logging.DEBUG)  # 指定最低的日志级别 critical > error > warning > info > debug

consol_haddler = logging.StreamHandler()  # 日志输出到屏幕控制台
consol_haddler.setLevel(logging.DEBUG)  # 设置日志等级

#  这里进行判断，如果logger.handlers列表为空，则添加，否则，直接去写日志，解决重复打印的问题
if len(logger.handlers) == 0:
    file_haddler = logging.FileHandler('log.log', encoding="utf-8")  # 向文件log.txt输出日志信息，encoding="utf-8",防止输出log文件中文乱码
    file_haddler.setLevel(logging.DEBUG)  # 设置输出到文件最低日志级别
 
    formatter = logging.Formatter("%(asctime)s %(name)s- %(levelname)s - %(message)s")
    # %(asctime)s	字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
    # %(name)s 自定义的模块名
 
    consol_haddler.setFormatter(formatter)  # 选择一个输出格式，可以定义多个输出格式
    file_haddler.setFormatter(formatter)
 
    logger.addHandler(file_haddler)  # 增加指定的handler
    logger.addHandler(consol_haddler)
